Ext.ns('AirApp');
AirApp.Application = Ext.extend(AirApp.Object, {
	//默认为空，不为空时加载配置文件，实例化时若有其它属性与配置文件中的属性冲突，则以指定的其它属性为准。
	configFile : '',
	//是否自动登录
	autoLogin : false,
	//登录窗口
	loginFile : 'login.html',
	//开机自动启动
	autoStart : false,
	//无动作超时时间(微妙),小于0则永不超时,默认为5分钟
	sessionTimeOut : 300,
	//ajax请求超时时间(微妙)
	ajaxTimeOut : 300,
	//记录用户状态，如窗口大小与位置
	rememberState : true,
	/**
	 * @cfg {Object} systemTrayConfig trayIcon 
	 * 系统托盘配置项,配置形式:{icon:'',tip:'',menu:[],listeners:{},autoShow:true}
	 */
	systemTrayConfig : null,
	/**
	 * @propty {AirApp.SystemTray} systemTray readOly
	 * 只读,系统托盘实例
	 */
	systemTray : null,
	//只读，用户登录后存放的用户信息
	currUser : null,
	//public 当前用户是否已登录
	isLogined : function(){
		return this.currUser?true:false;
	},
	constructor : function(config){
		if(config.configFile && (typeof config.configFile==='string')){
			AirApp.LocalAJAX.getJson(config.configFile,null,function(data){
				Ext.apply(this, data);
			},this,false);
		}
		AirApp.Application.superclass.constructor.apply(this,[config]);
		air.NativeApplication.nativeApplication.autoExit = false;
		this.initSystemTray();
		this.initLogin();
	},
	//purivate 初始化登录界面
	initLogin : function(){
		if (this.loginFile) {
			var loginWin =new Ext.air.NativeWindow({
				id:'loginWindow',
				type:'utility',
				chrome:'none',
				transparent : true,
				file: 'login.html',
				resizable: false				
			});
			loginWin.activate();
			loginWin.instance.orderToFront();
		}
		
	},
	//private 初始化系统托盘
	initSystemTray : function(){
		var config = this.systemTrayConfig;
		var tray = AirApp.SystemTray;
		if(config){
			var icon = config.icon;
			var tip = config.tip;
			var menu = config.menu;
			var listeners = config.listeners;
			var autoShow = config.autoShow;
			if(icon){
				tray.setIcon(icon,tip);
				
			}
			if(menu){
				tray.setMenu(menu);
			}
			if(listeners){
				for(var p in listeners){
					if(p)
						tray.on(p,listeners[p]);
				}
			}
			if(autoShow){
				//tray.showIcon();
			}
		}
		this.systemTray = tray;
	},
	//private 提供一个用于存放全局变量的map
	data : {},
	//public 设置全局变量
	set : function(name,value){
		this.data[name] = value;
	},
	//public 从全局变量中取得名子所对应的值
	get : function(name){
		return this.data[name];
	},
	exit:function (){
		var exitingEvent = new air.Event(air.Event.EXITING, false, true);
		air.NativeApplication.nativeApplication.dispatchEvent(exitingEvent);
		if (!exitingEvent.isDefaultPrevented()) {
			air.NativeApplication.nativeApplication.exit();
		}
	}
});